//! Stencil middle IR types.

mod abort;
pub use abort::AbortReason;

mod block;
pub use block::{AssignTarget, CtorAssignments, MirBlock, MirStatement};

mod container;
pub use container::{ContainerData, FieldEntry};

mod expr;
pub use expr::{Expr, TaggedExpr, TypedExpr};

mod function;
pub use function::{FnKind, MirFunction, MirSignature};

mod generator;
pub use generator::MirModuleGenerator;

mod module;
pub use module::{ContFunctionEntry, MirModule, ModContainerEntry};

mod transform;

mod typecheck;
pub use typecheck::{typecheck_expr, TypeError};

// private modules
mod accessor;
mod builder;
mod var_tracker;
